
\chapter{CEC'2010 Special Session and Competition on Large-Scale Global Optimization} \label{cec10}
\subsection{Basic functions}
    The above 20 benchmark functions are built on top of some basic and commonly
    used optimization functions. These functions are the sphere, elliptic, rastrigin,
    ackley, schwefel~1.2, and rosenbrock, all of which are separable except for the
    latter two which are non-separable. The equations defining these
    functions are presented in Table~\ref{t:bm:equations-basic-functions}, and their 
    landscapes in two dimensions are presented in
    Figure~\ref{f:bm:landscape-basic-functions}\footnote{
        The landscapes of the basic functions were computed with their respective
        equations using values within the following boundaries: sphere $(\pm5.12)$, elliptic $(\pm100)$, rastrigin $(\pm5)$,
        ackley $(\pm32)$, schwefel $(\pm100)$, and rosenbrock $(\pm100)$.
        }, where darker colors imply lower objective values and the global minimum is
        located in the center of each figure. Notice that the separability of the
        functions can be observed in their equations. For example, expanding the sum
        of the sphere function in two dimensions yields $\Fa{sphere} = x_1^2 +
        x_2^2$, showing that terms $x_1$ and $x_2$ can be optimized independently.
        Conversely, expanding schwefel~1.2 yields $\Fa{schwefel} = x_1^2 + (x_1 +
        x_2)^2$ showing the dependency of the two variables for computing the second
        term $(x_1 + x_2)^2$.
    
    \begin{table}
        \centering
        \renewcommand*{\arraystretch}{3.0}
        \begin{tabular}{rl}
            \toprule
            Sphere: & $\displaystyle\Fa{sphere}(\mathbf{x})  =  \sum_{i=1}^d x_i^2$\\
% 
             Elliptic: & $\displaystyle\Fa{elliptic}(\mathbf{x}) = \sum_{i=1}^d
            (10^6)^{\frac{i-1}{d-1}} x_i^2$\\
%           
             Rastrigin: & $\displaystyle\Fa{rastrigin}(\mathbf{x})  =  \sum_{i=1}^d
                 \left[ x_i^2 - 10\cos(2\pi x_i) + 10 \right]$\\
%
             Ackley: & $\displaystyle\Fa{ackley}(\mathbf{x}) =  -20 \exp \left( -0.2
                    \sqrt{a} \right) -\exp(b) + 20 + e$\\[-2ex]
                & $\displaystyle\mbox{where }a=\frac{1}{d} \sum_{i=1}^d x_i^2, \;
            b=\frac{1}{d} \sum_{i=1}^d \cos(2\pi x_i)$\\
%           
            Schwefel 1.2: & $\displaystyle\Fa{schwefel}(\mathbf{x})  =  \sum_{i=1}^d
                 \left(\sum_{j=1}^i x_i\right)^2$\\
%                
             Rosenbrock: & $\displaystyle\Fa{rosenbrock}(\mathbf{x})  = 
            \sum_{i=1}^{d-1} 100 (x_i^2 - x_{i+1})^2 + (x_i - 1)^2$\\[2ex] 
            \bottomrule
        \end{tabular}
        \caption{Equations of basic functions.}\label{t:bm:equations-basic-functions}
    \end{table}
    
    \begin{figure}
        \newcommand{\W}{0.38\textwidth}
        \newcommand{\HSep}{\hspace*{3em}}
        \centering
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-sphere.png}
            \caption{The sphere function}
        \end{subfigure}\HSep
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-elliptic.png}
            \caption{The elliptic function}
        \end{subfigure}
        
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-rastrigin.png}
            \caption{The rastrigin function}
        \end{subfigure}\HSep
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-ackley.png}
            \caption{The ackley function}
        \end{subfigure}
        
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-schwefel.png}
            \caption{The schwefel 1.2 function}
        \end{subfigure}\HSep
        \begin{subfigure}[c]{\W}
            \includegraphics[width=\textwidth]{figure/f-rosenbrock.png}
            \caption{The rosenbrock function}
        \end{subfigure}
        \caption{Landscape of basic functions in two
        dimensions.}\label{f:bm:landscape-basic-functions}
    \end{figure}
    
    
\clearpage
\subsection{Vector Operations}
    Additionally, the 20 benchmark functions perform the following 
    operations on the solution vectors: \texttt{Group}, \texttt{Permute},
    \texttt{Rotate}, and \texttt{Shift}. These operations can be
    used and combined by the benchmark functions to  modify the  solution vector
    $\mathbf{x}$ before computing its objective value\footnote{
        Notice that the first element of any vector is considered to be located at
        position 0. }. Additionally, a \texttt{Noise} operator is provided for this
        thesis in order to introduce Gaussian noise to the benchmark functions.
        Specifically,
    
    \begin{description}


\item[Group $(\Group)$] creates a vector $\mathbf{x}^g$ based on the contiguous
elements from an input vector given the starting  and ending position (inclusive
and exclusive, respectively). For instance, the operation
$\displaystyle\Group_{0}^m \mathbf{x}$ produces a vector $\mathbf{x}^g = \{ x_0,
x_1, \ldots, x_{m-1} \}$.
    
\item[Permute $(\Permute)$]   produces a vector $\mathbf{x}^p$ by  randomly
shuffling the positions of the input vector. For example, considering
$\mathbf{x}=\{x_0, x_1, x_2\}$, then $\Permute \mathbf{x}$ could produce
$\mathbf{x}^p = \{x_2, x_0, x_1\}$ depending on the random seed used.
    
\item[Rotate $(\Rotate)$] produces a vector $\mathbf{x}^r$ which is the result
of multiplying the input vector by an orthogonal matrix $\mathbf{M}$ provided in
the implementation by~\citet{be:cec-2010:suganthan10},  thus converting a 
function from separable to non-separable over  $\mathbf{x}^r$. For instance,
$\Fa{elliptic}\left( \Rotate \mathbf{x} \right)$  makes the elliptic function
non-separable.
    
% \item[Shift $(\Shift)$]  produces a vector $\mathbf{x}^s$ which is the result of
% subtracting a vector $\mathbf{o}^g$ from the input vector $\mathbf{x}$, thus
% translating the global minimum of a function. The vector $\mathbf{o}^g$ is
% extracted from vector $\mathbf{o}$ (whose length is $d$) as
% $\displaystyle\mathbf{o}^g= \Group_{i}^{|\mathbf{x}|} \mathbf{o}$, where $i$ is
% the starting point given as parameter to this operator, $|\mathbf{x}|$ is the
% length of the input vector and serves as ending point, and $\mathbf{o}$ is a
% randomly generated vector  provided in the implementation
% by~\citet{be:cec-2010:suganthan10}.
     
\item[Shift $(\Shift)$]  produces a vector $\mathbf{x}^s$ from subtracting
vectors $\mathbf{o}^g$ and $\mathbf{x}$ to translate the global minimum of a
function. The vector $\mathbf{o}^g$ is defined as
$\displaystyle\mathbf{o}^g= \Group_{i}^{i+|\mathbf{x}|} \mathbf{o}$, where 
$\mathbf{o}$ is a randomly generated vector of size $d$  (provided in the
implementation by~\citet{be:cec-2010:suganthan10}).
     
\item[Noise $(\Noise)$] introduces multiplicative Gaussian noise to the function
it precedes. This operator is used in this thesis in order to convert the
benchmark functions into dynamic optimization problems. As such, evaluating the
same solution will produce different results every time.
% For  instance, $F_{01}(\mathbf{x}, t) = \Noise_{0.33} \Fx{01}$, produces the
    
\item[Combinations] of the previous operators  are used by different benchmark
functions. For instance, considering $\displaystyle F(\mathbf{x}) =
\Fa{elliptic}\left( \Rotate \Shift_0 \Group_0^m \Permute \mathbf{x} \right)$ the
sequence of operations is as follows: \begin{enumerate}[a)] \item shuffle vector
$\mathbf{x}$ producing $\mathbf{x}^p = \Permute \mathbf{x}$, \item  truncate
vector $\mathbf{x}^p$  to size $m$ producing $\displaystyle\mathbf{x}^g =
\Group_0^m \mathbf{x}^p$, \item subtract vector $\mathbf{o}_0^{|\mathbf{x}^g|}$
from $\mathbf{x}^g$ producing $\displaystyle\mathbf{x}^s = \Shift_0
\mathbf{x}^g$, \item rotate vector $\mathbf{x}^g$ producing $\mathbf{x}^r =
\Rotate \mathbf{x}^s$, and \item compute the elliptic function on $\mathbf{x}^r$
producing $F(\mathbf{x}) = \Fa{elliptic} \left(\mathbf{x}^r\right)$.
    \end{enumerate}
    \end{description} 

  
\newcommand{\FunctionSummarySL}[5]{
\begin{center}
        \begin{tabular}{cccc}
            \hline
            \rc Modality & Boundaries &  Solution & Value\\\hline
            #2 & $\mathbf{x} \in #3^d$ & $\mathbf{x}^\star = #4$ & 
            $\Fx[x^\star]{#1}=#5$\\
            \hline
        \end{tabular}
\end{center}
}

\newcommand{\FunctionSummaryML}[6]{
\begin{center}
        \begin{tabular}{cccc}
            \hline
            \rc Modality & Boundaries &  Solution & Value\\\hline
            \multirow{2}{*}{#2} & \multirow{2}{*}{$\mathbf{x} \in #3^d$} & 
            $\displaystyle  #4$ & \multirow{2}{*}{$\Fx[x^\star]{#1}=#6$}\\
            & & $\displaystyle#5$ & \\
            \hline
        \end{tabular}
\end{center}
}
    
\subsection{Separable Functions $(\F{01\Dash03})$}
    \subsubsection{\F{01}: shifted elliptic function}
        \begin{equation*}
            \Fx{01} = \Fa{elliptic} \left(\Shift \mathbf{x} \right)
        \end{equation*}
        \FunctionSummarySL{01}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    \subsubsection{\F{02}: shifted rastrigin's function}
    \begin{equation*}
            \Fx{02} = \Fa{rastrigin} \left(\Shift \mathbf{x} \right)
        \end{equation*}
    \FunctionSummarySL{02}{Multimodal}{[-5,5]}{\mathbf{o}}{0}
    \subsubsection{\F{03}: shifted ackley's function}
        \begin{equation*}
            \Fx{03} = \Fa{ackley} \left(\Shift \mathbf{x} \right)
        \end{equation*}
    \FunctionSummarySL{03}{Multimodal}{[-32,32]}{\mathbf{o}}{0}
    
\subsection{Single-group of $m$ non-separable functions $(\F{04\Dash08})$}
    
    \subsubsection{\F{04}: single-group shifted and $m$-rotated elliptic function}
    \begin{equation*}
            \Fx{04} = 10^6 \times \Fa{elliptic} \left( \Rotate
            \Shift_{0} \Group_{0}^{m} \Permute \mathbf{x} \right) 
            + 
            \Fa{elliptic} \left(
            \Shift_{m}
            \Group_{m}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{04}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{05}:  single-group shifted and $m$-rotated rastrigin's
    function}
    \begin{equation*}
            \Fx{05} = 10^6 \times \Fa{rastrigin} \left( \Rotate
            \Shift_{0} \Group_{0}^{m} \Permute \mathbf{x} \right)
            +  
            \Fa{rastrigin} \left(
            \Shift_{m}
            \Group_{m}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{05}{Multimodal}{[-5,5]}{\mathbf{o}}{0}
    
    \subsubsection{\F{06}: single-group shifted and $m$-rotated ackley's function}
    \begin{equation*}
            \Fx{06} =  10^6 \times \Fa{ackley} \left( \Rotate
            \Shift_{0} \Group_{0}^{m} \Permute \mathbf{x} \right)
            + 
             \Fa{ackley} \left(
            \Shift_{m}
            \Group_{m}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{06}{Multimodal}{[-32,32]}{\mathbf{o}}{0}
    
    \subsubsection{\F{07}: single-group shifted $m$-dimensional schwefel's problem
    1.2}
    \begin{equation*}
            \Fx{07} = 10^6 \times \Fa{schwefel} \left( 
            \Shift_{0} \Group_{0}^{m} \Permute \mathbf{x} \right)
            +
            \Fa{sphere}  \left(
            \Shift_{m}
            \Group_{m}^{d}
            \Permute \mathbf{x} \right) 
    \end{equation*}
    \FunctionSummarySL{07}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{08}: single-group shifted $m$-dimensional rosenbrock's
    function}
    \begin{equation*}
            \Fx{08} =  10^6 \times \Fa{rosenbrock} \left( 
            \Shift_{0} \Group_{0}^{m} \Permute \mathbf{x} \right)
            + 
            \Fa{sphere}  \left(
            \Shift_{m}
            \Group_{m}^{d}
            \Permute \mathbf{x} \right) 
    \end{equation*}
    \FunctionSummaryML{08}{Multimodal}{[-100,100]}
    {\Group_{0}^{m} \Permute \mathbf{x}^\star =  1+\Group_{0}^{m} \Permute
    \mathbf{o}} 
    {\Group_{m}^{d} \Permute \mathbf{x}^\star =  1+\Group_{m}^{d} \Permute
    \mathbf{o}}{0}

\subsection{$\frac{d}{2m}$ groups of $m$ non-separable functions
$(\F{09\Dash13})$}
    \subsubsection{\F{09}: $\frac{d}{2m}$-group  shifted and $m$-rotated elliptic function}
    \begin{equation*}
            \Fx{09} =
            \sum_{k=0}^{\nf{d}{2m}-1}\left[ \Fa{elliptic} \left( \Rotate
            \Shift_{k \times m} \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x}
            \right)\right] + 
            \Fa{elliptic} \left(
            \Shift_{\nf{d}{2}}
            \Group_{\nf{d}{2}}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{09}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{10}: $\frac{d}{2m}$-group shifted and $m$-rotated rastrigin's function}
    \begin{equation*}
            \Fx{10} = \sum_{k=0}^{\nf{d}{2m}-1} \Fa{rastrigin} \left( \Rotate \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
            +  
            \Fa{rastrigin} \left(
            \Shift_{\nf{d}{2}}
            \Group_{\nf{d}{2}}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{10}{Multimodal}{[-5,5]}{\mathbf{o}}{0}
    
    \subsubsection{\F{11}: $\frac{d}{2m}$-group shifted and $m$-rotated ackley's function   }
    \begin{equation*}
            \Fx{11} = \sum_{k=0}^{\nf{d}{2m}-1} \Fa{ackley} \left( \Rotate \Shift_{k \times
            m} \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
            + 
            \Fa{ackley} \left(
            \Shift_{\nf{d}{2}}
            \Group_{\nf{d}{2}}^{d}
            \Permute \mathbf{x} \right) 
    \end{equation*}
    \FunctionSummarySL{11}{Multimodal}{[-32,32]}{\mathbf{o}}{0}
    
    \subsubsection{\F{12}: $\frac{d}{2m}$-group shifted and $m$-rotated schwefel's problem 1.2}
    \begin{equation*}
            \Fx{12} =  \sum_{k=0}^{\nf{d}{2m}-1} \Fa{schwefel} \left( \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
            + 
            \Fa{sphere} \left(
            \Shift_{\nf{d}{2}}
            \Group_{\nf{d}{2}}^{d}
            \Permute \mathbf{x} \right) 
    \end{equation*}
    \FunctionSummarySL{12}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{13}: $\frac{d}{2m}$-group shifted and $m$-rotated rosenbrocks's function}
    \begin{equation*}
            \Fx{13} = \sum_{k=0}^{\nf{d}{2m}-1} \Fa{rosenbrock} \left( \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
            +
            \Fa{sphere} \left(
            \Shift_{\nf{d}{2}}
            \Group_{\nf{d}{2}}^{d}
            \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummaryML{13}{Multimodal}{[-100,100]}
    {\Group_{0}^{\nf{d}{2}} \Permute \mathbf{x}^\star = 
    1+\Group_{0}^{\nf{d}{2}}
    \Permute
    \mathbf{o}} 
    {\Group_{\nf{d}{2}}^{d} \Permute \mathbf{x}^\star =  1+\Group_{\nf{d}{2}}^{d}
    \Permute
    \mathbf{o}}{0}

\subsection{$\frac{d}{m}$ groups of $m$ non-separable functions
$(\F{14\Dash18})$}
    \subsubsection{\F{14}: $\frac{d}{m}$-group  shifted and $m$-rotated elliptic function}
    \begin{equation*}
            \Fx{14} = \sum_{k=0}^{\nf{d}{m}-1} \Fa{elliptic} \left( \Rotate \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{14}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{15}: $\frac{d}{m}$-group shifted and $m$-rotated rastrigin's function}
    \begin{equation*}
            \Fx{15} = \sum_{k=0}^{\nf{d}{m}-1} \Fa{rastrigin} \left( \Rotate \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{15}{Multimodal}{[-5,5]}{\mathbf{o}}{0}
    
    \subsubsection{\F{16}: $\frac{d}{m}$-group shifted and $m$-rotated ackley's function   }
    \begin{equation*}
            \Fx{16} = \sum_{k=0}^{\nf{d}{m}-1} \Fa{ackley} \left( \Rotate \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{16}{Multimodal}{[-32,32]}{\mathbf{o}}{0}
    
    \subsubsection{\F{17}: $\frac{d}{m}$-group shifted and $m$-dimensional schwefel's problem
    1.2}
        \begin{equation*}
            \Fx{17} = \sum_{k=0}^{\nf{d}{m}-1} \Fa{schwefel} \left( \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{17}{Unimodal}{[-100,100]}{\mathbf{o}}{0}
    
    \subsubsection{\F{18}: $\frac{d}{m}$-group shifted  $m$-dimensional rosenbrocks's
    function}
    \begin{equation*}
            \Fx{18} = \sum_{k=0}^{\nf{d}{m}-1} \Fa{rosenbrock} \left( \Shift_{k \times m}
            \Group_{k \times m}^{(k+1)\times m} \Permute \mathbf{x} \right)
    \end{equation*}
    \FunctionSummarySL{18}{Multimodal}{[-100,100]}{\mathbf{o} + 1}{0}
    
\subsection{Non-separable functions $(\F{19,20})$ }
    \subsubsection{\F{19}:  schwefel's problem 1.2}
        \begin{equation*}
            \Fx{19} = \Fa{schwefel} \left(\Shift \mathbf{x} \right)
        \end{equation*}
        \FunctionSummarySL{19}{Unimodal}{[-100,100]}{\mathbf{o} }{0}
        
    \subsubsection{\F{20}:  shifted rosenbrock's function}
        \begin{equation*}
            \Fx{20} = \Fa{rosenbrock} \left(\Shift \mathbf{x} \right)
        \end{equation*}
        \FunctionSummarySL{20}{Multimodal}{[-100,100]}{\mathbf{o} + 1}{0}
    
        
        
        \chapter{Class Diagrams of the  IEEE CEC'2010  Benchmark Functions}
\label{A:class-diagrams} 

\vspace{-2ex}

The class diagrams designed to implement the benchmark functions from the IEEE
CEC'2010 Special Session and Competition on Large-Scale Global
Optimization~\citep{be:cec-2010:suganthan10} are presented in this appendix. The
software package implemented as part of this thesis has been named
\texttt{ecbenchmarks} and made freely available at
\url{http://code.google.com/p/ecbenchmarks}. Additionally, the newly implemented
benchmark functions can be validated any time using the class
\texttt{CecTest}\footnote{Notice that
the  class diagram of \texttt{CecTest} is omitted for the sake of brevity, but
it is included in \texttt{ecbenchmarks}.}
  to compare the results with those
from the original implementation~\citep{be:cec-2010:suganthan10}. 



The base classes are presented in Figure~\ref{A:base-classes}. \texttt{Function}
is an interface to be implemented by functions and operators. It contains a
single method to compute the objective value of a given vector $\mathbf{x}$.
\texttt{AbstractFunction} incorporates additional information about a function
regarding its dimensionality, boundaries of the search space,
objective of the optimization, and others. Also, it provides methods to
compare solutions, provide the worst  possible objective value,  and export the
landscape of a bi-dimensional function as an R script able to represent it  
as a figure (e.g. Figure~\ref{f:bm:landscape-basic-functions} in
Chapter~\ref{c:benchmarks}).
\texttt{Operator} is the abstract class for vector operators.
It allows to derive operators to manipulate vector $\mathbf{x}$ before computing a function on it.  
\texttt{Benchmark} is a class to define sets of benchmark functions.

The basic functions are presented in Figure~\ref{A:basic-functions}. All 
benchmarks are based upon the classic functions \texttt{Ackley},
\texttt{Elliptic}, \texttt{Rastri\-gin}, \texttt{Rosen\-brock}, and
\texttt{Sphere}, all of which implement the interface \texttt{Function}.

The classes designed to perform the vector operations are presented in
Figure~\ref{A:operators}. Notice that since the benchmark functions are defined
in terms of cascaded vector operations, the names of the operators were chosen
in past tense for readability purposes. Each operator takes a vector, performs
its respective operation, and passes the resulting vector to its inner function.
\texttt{Grouped} extracts a vector $\mathbf{x}^g$ whose  elements are those from
 $\mathbf{x}$ defined by indexes \texttt{fromIndex} (inclusive) and
\texttt{toIndex} (exclusive). \texttt{Permuted} produces a vector $\mathbf{x}^p$
by randomly shuffling the positions of $\mathbf{x}$ according to a permutation
vector. \texttt{Rotated}  produces a vector $\mathbf{x}^r$ which is the result
of multiplying $\mathbf{x}$ by an orthogonal rotation matrix. \texttt{Shift}
produces a vector $\mathbf{x}^s$ which is the result of subtracting $\mathbf{x}$
and a shift vector starting at index \texttt{fromIndex}.
     
       

The base classes  particularly designed for the IEEE  CEC'2010  benchmark
functions are presented in Figure~\ref{A:base-classes-cec10}.
\texttt{CecRandom} provides the random number generator implemented in the
original software package~\citep{be:cec-2010:suganthan10}.  \texttt{CecFunction}
serves as the base class to define each of the benchmark functions. It extends
the class \texttt{AbstractFunction} and provides a random number generator that
is an instance of \texttt{CecRandom}. \texttt{CecBenchmark} creates a set of the 
benchmark functions with the dimensionality and number of groups specified.
\texttt{CecRotated} provides rotation of vectors as implemented in the
original software package, which is different than conventional matrix
multiplication.

Finally, the class diagrams of the IEEE  CEC'2010  benchmark functions are
presented in Figures~\ref{A:cec10-functions-A} and~\ref{A:cec10-functions-B}.
All benchmark functions  inherit from the class \texttt{CecFunction} and
incorporate the necessary vector operations as specified
in~\citep{be:cec-2010:suganthan10}. 


 
 

\begin{sidewaysfigure}
    \centering
    \includegraphics[scale=.8]{figure/cd-ecbenchmarks.eps}
    \caption{Base classes}\label{A:base-classes}
\end{sidewaysfigure}

\begin{sidewaysfigure}
\newsavebox{\BoxAppBasicFunctions}
\begin{lrbox}{\BoxAppBasicFunctions}
\begin{minipage}[t]{\textwidth} 
    \centering
    \includegraphics[scale=.8]{figure/cd-functions.eps}
    \caption{Basic functions}\label{A:basic-functions}
\end{minipage}
\end{lrbox}

\rotatebox{180}{\usebox{\BoxAppBasicFunctions}}

\end{sidewaysfigure} 

\begin{sidewaysfigure} 
    \centering
    \includegraphics[scale=.8]{figure/cd-operators.eps}
    \caption{Vector operations}\label{A:operators}
\end{sidewaysfigure} 


\begin{sidewaysfigure}
\newsavebox{\BoxAppBaseClasses}
\begin{lrbox}{\BoxAppBaseClasses}
\begin{minipage}[t]{\textwidth} 
    \centering
    \includegraphics[scale=.8]{figure/cd-cec10.eps}
    \caption{Base classes of IEEE CEC'2010 benchmarks}\label{A:base-classes-cec10}
\end{minipage}
\end{lrbox}
\rotatebox{180}{\usebox{\BoxAppBaseClasses}}
\end{sidewaysfigure}

\begin{sidewaysfigure}
    \centering 
    \begin{subfigure}[c]{.45\textwidth}\centering
            \includegraphics[scale=.8]{figure/cec10-group-A.eps}\\
            \caption{Separable  functions}
            \vspace{2ex}
            \includegraphics[scale=.8]{figure/cec10-group-B.eps}
            \caption{Non-separable  functions}
         
    \end{subfigure}\hspace{2em}
    \begin{subfigure}[c]{.45\textwidth}\centering
        \includegraphics[scale=.8]{figure/cec10-group-C.eps}\\
        \caption{Single-group of $m$ non-separable functions}
    \end{subfigure}
\caption{IEEE CEC'2010 benchmark functions: $\F{01-08}$ and $\F{19-20}$}
\label{A:cec10-functions-A}
    
\end{sidewaysfigure}


\begin{sidewaysfigure}
\newsavebox{\BoxAppCecB}
\begin{lrbox}{\BoxAppCecB}
\begin{minipage}[t]{\textwidth}
    \centering
    \begin{subfigure}[c]{.45\textwidth}\centering
        \setcounter{subfigure}{3}
            \includegraphics[scale=.8]{figure/cec10-group-D.eps}
        \caption{$\frac{d}{2m}$ groups of $m$ non-separable functions}
    \end{subfigure}
    \begin{subfigure}[c]{.45\textwidth}\centering
            \includegraphics[scale=.8]{figure/cec10-group-E.eps}\\
        \caption{$\frac{d}{m}$ groups of $m$ non-separable functions}
    \end{subfigure}
    \caption{IEEE CEC'2010 benchmark functions: $\F{09-18}$}
    \label{A:cec10-functions-B}
\end{minipage}
\end{lrbox}
\rotatebox{180}{\usebox{\BoxAppCecB}}
\end{sidewaysfigure}
        
	
